@echo off
chcp 65001 >nul 2>&1
REM 仓颉仓库管理工具 (Cangjie Repo Manager) 安装脚本 - Windows
REM Git URL: https://gitcode.com/zichexuelan/cjdev.git

setlocal enabledelayedexpansion

echo ==========================================
echo   仓颉仓库管理工具 (Cangjie Repo Manager)
echo   安装脚本 - Windows
echo ==========================================
echo.

REM 检查是否在 cjdev 目录中
if exist "cjdev.bat" if exist "requirements.txt" if exist "commands" (
    echo [SUCCESS] 检测到当前目录已经是 cjdev 项目目录
    set "INSTALL_DIR=%~dp0"
    set "INSTALL_DIR=!INSTALL_DIR:~0,-1!"
) else (
    echo [INFO] 请先克隆仓库或进入 cjdev 目录
    echo [INFO] git clone https://gitcode.com/zichexuelan/cjdev.git
    echo [INFO] cd cjdev
    pause
    exit /b 1
)

echo [INFO] 工作目录: %INSTALL_DIR%
echo.

REM 检查 Python（优先使用 python3，如果不存在则使用 python）
set PYTHON_CMD=
python3 --version >nul 2>&1
if not errorlevel 1 (
    set PYTHON_CMD=python3
) else (
    python --version >nul 2>&1
    if not errorlevel 1 (
        set PYTHON_CMD=python
    ) else (
        echo [ERROR] 未找到 Python，请先安装 Python 3
        echo [INFO] 下载地址: https://www.python.org/downloads/
        pause
        exit /b 1
    )
)

for /f "tokens=*" %%i in ('%PYTHON_CMD% --version 2^>^&1') do set PYTHON_VERSION=%%i
echo [SUCCESS] 找到 %PYTHON_VERSION%
echo.

REM 检查 pip
%PYTHON_CMD% -m pip --version >nul 2>&1
if errorlevel 1 (
    echo [ERROR] 未找到 pip，请先安装 pip
    pause
    exit /b 1
)

echo [SUCCESS] 找到 pip
echo.

REM 安装依赖
echo [INFO] 正在安装 Python 依赖...
%PYTHON_CMD% -m pip install -r requirements.txt
if errorlevel 1 (
    echo [ERROR] 依赖安装失败
    pause
    exit /b 1
)
echo [SUCCESS] 依赖安装完成
echo.

REM 测试 cjdev 命令
echo [INFO] 测试 cjdev 命令...
%PYTHON_CMD% "%INSTALL_DIR%\cjdev_manager.py" --version >nul 2>&1
if errorlevel 1 (
    echo [WARNING] cjdev 命令测试失败，但可能仍然可用
) else (
    echo [SUCCESS] cjdev 命令测试通过
)
echo.

REM 询问是否全局安装
echo === 全局安装选项 ===
set /p GLOBAL_INSTALL="是否要将 cjdev 添加到系统 PATH（全局可用）？[Y/n]: "
if /i "%GLOBAL_INSTALL%"=="n" (
    echo [INFO] 跳过全局安装，你可以使用: %INSTALL_DIR%\cjdev.bat
    goto :token_setup
)

echo.
echo [INFO] 请选择安装方式：
echo   1) 添加到用户 PATH（推荐，无需管理员权限）
echo   2) 添加到系统 PATH（需要管理员权限）
echo   3) 跳过全局安装
set /p INSTALL_METHOD="请选择 [1-3] (默认: 1): "
if "%INSTALL_METHOD%"=="" set INSTALL_METHOD=1

if "%INSTALL_METHOD%"=="1" (
    REM 添加到用户 PATH
    for /f "tokens=2*" %%a in ('reg query "HKCU\Environment" /v PATH 2^>nul') do set "USER_PATH=%%b"
    
    echo %USER_PATH% | findstr /C:"%INSTALL_DIR%" >nul
    if errorlevel 1 (
        setx PATH "%USER_PATH%;%INSTALL_DIR%"
        if errorlevel 1 (
            echo [ERROR] 添加到用户 PATH 失败
        ) else (
            echo [SUCCESS] 已添加到用户 PATH
            echo [INFO] 请重新打开命令提示符或 PowerShell 以使更改生效
        )
    ) else (
        echo [WARNING] PATH 配置已存在
    )
) else if "%INSTALL_METHOD%"=="2" (
    REM 添加到系统 PATH（需要管理员权限）
    echo [INFO] 需要管理员权限，请以管理员身份运行此脚本
    for /f "tokens=2*" %%a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PATH 2^>nul') do set "SYSTEM_PATH=%%b"
    
    echo %SYSTEM_PATH% | findstr /C:"%INSTALL_DIR%" >nul
    if errorlevel 1 (
        setx PATH "%SYSTEM_PATH%;%INSTALL_DIR%" /M
        if errorlevel 1 (
            echo [ERROR] 添加到系统 PATH 失败（可能需要管理员权限）
        ) else (
            echo [SUCCESS] 已添加到系统 PATH
            echo [INFO] 请重新打开命令提示符或 PowerShell 以使更改生效
        )
    ) else (
        echo [WARNING] PATH 配置已存在
    )
) else (
    echo [INFO] 跳过全局安装
)

:token_setup
echo.

REM 询问是否设置 GitCode token
echo === GitCode Token 设置 ===
echo [INFO] GitCode token 用于创建 Issue 和 PR（必需）
set /p SET_TOKEN="是否现在设置 GitCode token？[y/N]: "
if /i not "%SET_TOKEN%"=="y" (
    echo [INFO] 你可以稍后手动设置:
    echo [INFO]   setx gitcode_token "your_token_here"
    goto :finish
)

set /p TOKEN="请输入你的 GitCode token: "
if "%TOKEN%"=="" (
    echo [WARNING] 未输入 token，跳过设置
    goto :finish
)

REM 检查是否已存在
reg query "HKCU\Environment" /v gitcode_token >nul 2>&1
if not errorlevel 1 (
    echo [WARNING] GitCode token 配置已存在
    set /p OVERWRITE="是否覆盖现有配置？[y/N]: "
    if /i not "!OVERWRITE!"=="y" (
        echo [INFO] 保留现有配置
        goto :finish
    )
)

REM 设置永久环境变量（对新窗口生效）
setx gitcode_token "%TOKEN%"
if errorlevel 1 (
    echo [ERROR] 设置 GitCode token 失败
    goto :finish
)

REM 同时设置临时环境变量（对当前窗口生效）
set gitcode_token=%TOKEN%
echo [SUCCESS] GitCode token 已设置
echo [INFO] 当前窗口已可用，新窗口需要重新打开命令提示符或 PowerShell

echo.
echo === CLI 语言设置 ===
set "TARGET_LANG=zh"
set /p SET_LANG="是否现在设置 cjdev CLI 语言（zh/en）？[Y/n]: "
if /i "%SET_LANG%"=="n" (
    echo [INFO] 可稍后运行: cjdev config -l en ^| zh
    goto :finish
)

:language_choice
echo.
echo [INFO] 请选择界面语言:
echo   1) 中文 (zh)
echo   2) English (en)
set /p LANG_OPTION="请选择 [1-2] (默认: 1): "
if "%LANG_OPTION%"=="" (
    set "LANG_OPTION=1"
)
if "%LANG_OPTION%"=="2" (
    set "TARGET_LANG=en"
) else if not "%LANG_OPTION%"=="1" (
    echo [WARNING] 无效选项，请重新输入。
    goto :language_choice
)

echo [INFO] 正在设置 CLI 语言为 %TARGET_LANG% ...
%PYTHON_CMD% "%INSTALL_DIR%\cjdev_manager.py" config -l %TARGET_LANG%
if errorlevel 1 (
    echo [WARNING] 设置失败，请稍后手动运行: cjdev config -l %TARGET_LANG%
) else (
    echo [SUCCESS] CLI 语言已更新。可随时再次运行 cjdev config -l zh/en 调整。
)

:finish
echo.
echo [SUCCESS] ==========================================
echo [SUCCESS]   安装完成！
echo [SUCCESS] ==========================================
echo.
echo [INFO] 使用说明：
echo.

if "%INSTALL_METHOD%"=="1" if not "%INSTALL_METHOD%"=="" (
    echo [INFO]   1. 请重新打开命令提示符或 PowerShell
    echo [INFO]   2. 开始使用:
    echo [INFO]      cjdev init -b feature-branch -u your_username
    echo [INFO]      cjdev sync
    echo [INFO]      cjdev status
) else if "%INSTALL_METHOD%"=="2" if not "%INSTALL_METHOD%"=="" (
    echo [INFO]   1. 请重新打开命令提示符或 PowerShell
    echo [INFO]   2. 开始使用:
    echo [INFO]      cjdev init -b feature-branch -u your_username
    echo [INFO]      cjdev sync
    echo [INFO]      cjdev status
) else (
    echo [INFO]   使用完整路径运行命令:
    echo [INFO]     %INSTALL_DIR%\cjdev.bat init -b feature-branch -u your_username
    echo [INFO]     %INSTALL_DIR%\cjdev.bat sync
    echo [INFO]     %INSTALL_DIR%\cjdev.bat status
    echo.
    echo [INFO]   或添加临时 PATH:
    echo [INFO]     set PATH=%INSTALL_DIR%;%%PATH%%
)

echo.
echo [INFO] 更多信息请查看: %INSTALL_DIR%\README.md
echo.
pause

